package com.gitee.swsk33.websocketdemo.api.websocket;

import jakarta.websocket.*;
import jakarta.websocket.server.ServerEndpoint;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * 纯文本Websocket
 */
@Slf4j
@Component
@ServerEndpoint("/ws/text")
public class TextWebSocketAPI {

	/**
	 * 连接建立成功调用的方法
	 */
	@OnOpen
	public void onOpen(Session session) {
		log.info("有新连接加入！ID是：{}", session.getId());
	}

	/**
	 * 连接关闭调用的方法
	 */
	@OnClose
	public void onClose(Session session) {
		log.warn("有一连接关闭！ID是：{}", session.getId());
	}

	/**
	 * 收到客户端消息后调用的方法
	 */
	@OnMessage
	public void onMessage(String message, Session session) throws Exception {
		log.info("来自客户端的消息：{}，ID是：{}", message, session.getId());
		// 返回消息
		session.getBasicRemote().sendText("接收到消息！内容：" + message);
	}

	/**
	 * 发生错误时调用
	 */
	@OnError
	public void onError(Session session, Throwable error) {
		log.error("发生错误！ID是：{}", session.getId());
		log.error(error.getMessage());
	}

}